iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0

Day 11 中國魔術卡

在前面的文章我們簡單認識的 Mifare Classic 1k 卡片後,我們來聊聊中國魔術卡這個神奇的小東東吧,但由於筆者只有研究 Mifare Classic 1k 的中國魔術卡,所以這篇文章也只會介紹這類中國魔術卡。

為什麼會有中國魔術卡?

不知道大家還記不記得,Mifare Classic 1k 的 Sector 0 Block 0 是製造商區塊 (Manufacturer block),這個區塊會在製造時寫入一個唯讀的資料,通常用來存放卡片的「UID」、「ATQA」、「SAK」及製造商資料。

然後就開始有一些讀卡機廠商,就選擇只讀取卡片的「UID」、「ATQA」、「SAK」來進行存取控制,如果在白名單內就能開門之類的動作,而沒有去讀取卡片的其他內容。

會做出這樣的決定,通常是有很多因素造成的,例如:開發讀卡機的開發者沒有很注重這塊的安全性、為了相容別人發行的 M1 卡片…等。

但使用者肯定也會因為各種原因需要拷貝卡片,例如:租房子的時候只有一張卡片,所以需要拷貝一張給親友;怕卡片弄丟所以多拷貝一張卡片備份…等。

當我們想要拷貝卡片時,如果卡片製造商區塊無法修改,我們就沒辦法把製造商區塊複製到另一張卡片,我們也很難特別去找到一張製造商區塊完全相同的卡片。換句話說,使用者沒辦法在這類只讀取卡片「UID」、「ATQA」、「SAK」的讀卡機上使用拷貝的卡片。

於是就有卡片的製造廠商,幫卡片加上可以修改製造商區塊的功能,由於這類卡片最早在中國大陸出現,在國外把這種卡片簡稱 Chinese Magic Card,中文翻譯過來就是中國魔術卡。

第一代 UID 卡

在中國大陸通常把這種卡片稱為「IC 白卡」、「UID 卡」、「拷貝卡」,而英文語系的人通常把這種卡片稱為「Gen1a」。這類卡片有提供後門指令,只要使用後門指令後,就可以無視存取控制來讀寫任何資料。目前市面上有很多這類卡片的變種,有的變種也會偷工減料,例如不支援 increment/decrement/restore/transfer 指令(會導致無法模擬成部份卡片)。由於這種卡片問世的時間最早,所以很多讀卡機都會故意發送後門指令來偵測這類卡片。

但這個卡片的後門指令不是所有讀卡機都支援,Android 及 iPhone 手機也都不支援,所以可能會需要使用一些特別的讀卡機才能修改,如果讀者有 Proxmark3 這個讀卡機的話,可以透過 hf mf csetuid 指令來修改卡片的「UID」、「ATQA」、「SAK」。

第二代 CUID 卡

在中國大陸通常把這種卡片稱為「CUID 卡」、「防火牆卡」,而英文語系的人通常把這種卡片稱為「Gen2」、「Direct Write」。這種卡片沒有提供可以無視存取控制的後門指令,但這種卡片的製造商區塊,只要在經過 Sector 0 的存取權限驗證後,就可以直接修改來達成修改「UID」、「ATQA」、「SAK」的目的,但這種卡片如果資料不小心寫錯,該 Sector 就會變成無法讀寫(俗稱變磚)。目前市面上有很多這類卡片的變種,例如:只能修改一次製造商區塊的「FUID 卡」,以及執行後門指令後製造商區塊就被鎖定的「UFUID 卡」。由於這種卡片問世的時間比第一代晚,所以能偵測這類卡片的讀卡機相對較少,但這種卡片也很容易偵測,只要讀卡機故意修改製造商區塊就可以來偵測這類卡片。

這種卡片對於智慧型手機的相容度很高,因為修改的指令就跟卡片的寫入指令相同,例如 Android 的 MIFARE Classic Tool 就支援這類卡片的修改。

參考資料


上一篇
Day 10 Mifare Classic 1k 介紹
下一篇
Day 12 建立一個新的 Git 專案
系列文
用 Web Serial/Bluetooth 來控制 ChameleonUltra 硬體30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言